#ifndef ENVIRONMENTALKNOWLEDGE_H
#define ENVIRONMENTALKNOWLEDGE_H

#include <QString>
#include "knowledges.h"
#include "position.h"

namespace IAlib
{
    class EnvironmentalKnowledge : public Knowledges
    {
    public:

        enum environmental_knowledge_type
        {
            ENV_KW_DISASTER,
            ENV_KW_OTHER
        };

        enum environmental_knowledge_state
        {
            ENV_KW_STATE_UNKNOWN,
            ENV_KW_STATE_INITIAL,
            ENV_KW_STATE_INPROGRESS,
            ENV_KW_STATE_INREGRESS,
            ENV_KW_STATE_TERMINATED,
            ENV_KW_STATE_LAST
        };

        EnvironmentalKnowledge();
        EnvironmentalKnowledge(const EnvironmentalKnowledge& knowledge);

        void setID(const QString& id) { m_id = id; }
        QString getID() const { return m_id; }

        void setData(const QString& data) { m_data = data; }
        QString getData() const { return m_data; }

        void setEnvKwType(const environmental_knowledge_type type) { m_env_type = type; }
        environmental_knowledge_type  getEnvKwType() const { return m_env_type; }

        void setEnvKwType(const environmental_knowledge_state state) { m_state = state; }
        environmental_knowledge_state  getEnvKwState() const { return m_state; }

        virtual QByteArray toByteArray() const;
        virtual void fromByteArray(QByteArray &byte_array);

    private:

        QString m_id;
        QString m_data;
        Position m_position;
        environmental_knowledge_type  m_env_type;
        environmental_knowledge_state m_state;
    };
}

#endif // ENVIRONMENTALKNOWLEDGE_H
